﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Loja.orders
{
    public partial class kart : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string scr = @"$(document).ready(function () {
                                $('.finalizar').button({ icons: { primary: 'ui-icon-check'}});
                                $('.voltar').button({ icons: { primary: 'ui-icon-circle-arrow-w'} });
                                $('.menos').button({ icons: { primary: 'ui-icon-circle-triangle-w'}, text: false });
                                $('.mais').button({ icons: { primary:'ui-icon-circle-triangle-e'}, text: false });
                                $('.calcular').button({ icons: { primary:'ui-icon-calculator'}, text: false });
                            });";
            ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "scr", scr, true);

            if (!IsPostBack)
            {
                this.carregaDados();

                //if (((Pedido)Session["Carrinho"]).PedItes.Count == 0) {
                //    Response.Redirect(Page.ResolveUrl("../store/Home.aspx"));
                //}
            }
        }

        protected void rptCarrinho_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            Pedido pedido = (Pedido)Session["Carrinho"];
            short _idPro = short.Parse(((HiddenField)e.Item.FindControl("hdProduto")).Value);
            short _idPeso = short.Parse(((HiddenField)e.Item.FindControl("hdPeso")).Value);
            int i = 0;
            switch (e.CommandName)
            {
                case "mais":
                    
                    foreach (var item in pedido.PedItes)
                    {
                        if(item.ProID == _idPro && item.PtmID == _idPeso)
                        {
                            pedido.PedItes[i].IteQtd += 1;
                            if (pedido.PedItes[i].IteQtd > 999)
                                pedido.PedItes[i].IteQtd = 999;
                            break;
                        }
                        i++;
                    }
                    break;

                case "menos":
                    foreach (var item in pedido.PedItes)
                    {
                        if(item.ProID == _idPro && item.PtmID == _idPeso)
                        {                            
                            pedido.PedItes[i].IteQtd -= 1;
                            if(pedido.PedItes[i].IteQtd <= 0)
                                pedido.PedItes[i].IteQtd = 1;

                            break;
                        }
                        i++;
                    }
                    break;

                case "exlcuir":
                    foreach (var item in pedido.PedItes)
                    {
                        if (item.ProID == _idPro && item.PtmID == _idPeso)
                        {
                            pedido.PedItes.RemoveAt(i);
                            break;
                        }
                        i++;
                    }
                    break;
                default:
                    foreach (var item in pedido.PedItes)
                    {
                        if (item.ProID == _idPro && item.PtmID == _idPeso)
                        {
                            pedido.PedItes[i].IteQtd = short.Parse((((TextBox)e.Item.FindControl("txtQtde")).Text));
                            break;
                        }
                        i++;
                    }
                    break;
                    
            }
            Session["Carrinho"] = pedido;
            this.carregaDados();
        }

        protected void btnBackShop_Click(object sender, EventArgs e)
        {
            Response.Redirect(Page.ResolveUrl("../store/Home.aspx"));
        }

        protected void rptCarrinho_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            short _id = short.Parse(Convert.ToString(DataBinder.Eval(e.Item.DataItem, "proId")));
            short _ptmID = short.Parse(Convert.ToString(DataBinder.Eval(e.Item.DataItem, "ptmID")));
            Produto prod = new LojaChocolateDCDataContext().GetTable<Produto>().Where(i => i.ProID == _id).SingleOrDefault();
            //atribui valor na caixa de texto
            ((TextBox)e.Item.FindControl("txtQtde")).Text = Convert.ToString(DataBinder.Eval(e.Item.DataItem, "iteQtd"));
            //((Image)e.Item.FindControl("imgProduto")).ImageUrl = (prod.ProImgs[0].PmgLoc == null ? "" : prod.ProImgs[0].PmgLoc);
            ((Label)e.Item.FindControl("lblDescicao")).Text = prod.ProDes;
            ((Label)e.Item.FindControl("lblPeso")).Text = String.Format("{0:0.00}", prod.ProPes.Where(p => p.PtmID == _ptmID).Single().PtmPes) + " g.";
            ((HiddenField)e.Item.FindControl("hdProduto")).Value = Convert.ToString(_id);
            ((HiddenField)e.Item.FindControl("hdPeso")).Value = Convert.ToString(_ptmID);
            ((Label)e.Item.FindControl("lblValTot")).Text = String.Format("{0:c}", DataBinder.Eval(e.Item.DataItem, "proValTot"));
            ((Label)e.Item.FindControl("lblValUni")).Text = String.Format("{0:c}", DataBinder.Eval(e.Item.DataItem, "proVal"));
        }

        protected void carregaDados()
        {
            Pedido pedido = (Pedido)Session["Carrinho"];
            if (pedido != null)
            {
                var itens = (from item in pedido.PedItes
                             select new
                             {
                                 proVal = item.IteVal,
                                 proValTot = (item.IteVal * item.IteQtd),
                                 iteQtd = item.IteQtd,
                                 proId = item.ProID,
                                 ptmId = item.PtmID
                             }).ToList();
                lblTotPed.Text = String.Format("{0:c}",itens.Sum(i => i.proValTot));
                rptCarrinho.DataSource = itens;
                rptCarrinho.DataBind();
            }
        }

        protected void btnEndShop_Click(object sender, EventArgs e)
        {
            Response.Redirect(Page.ResolveUrl("../orders/confirmAddress.aspx"));
        }
    }
}